home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG: World of Games / PC-SIG World of Games (CDRM1080710) (1993).iso / 262 / APERFORM.ASC < prev    next >
Text File  |  1985-01-26  |  19KB  |  422 lines

  1. 10000 '*************************************************************
  2. 10010 '*****    PC-GOLF    THE GOLFER's PROGRAM     PC-GOLF    *****
  3. 10020 '*****    Version 1.4  (C) 1983,1984,1985 Ed Chandler    *****
  4. 10030 '*************************************************************
  5. 10040 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  6. 10050 '     5. GET the golfer's score sheet
  7. 10060 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  8. 10070 CLS:PRINT MNU5$
  9. 10072 IF ROS=0 THEN 10080
  10. 10075 DEF SEG=&H40:I%=PEEK(&H17):I%=I% OR 32:POKE &H17,I% 'num lock on
  11. 10080 IF PACT>0 THEN 10120
  12. 10090 PRINT:PRINT"There are no player's scores yet, because"
  13. 10100 PRINT"no rounds have been tallied."
  14. 10110 GOSUB 580:GOTO 530 'back to main
  15. 10120 PRINT:PRINT SPC(7);"PC-GOLF's Score Sheets":PRINT
  16. 10130 PRINT SPC(3)"1.  Select a player."
  17. 10140 PRINT SPC(3);MNURT$:PRINT
  18. 10150 M1$="key":M2$="(1 or M) ":GOSUB 570
  19. 10160 IF KB=1 THEN 10190
  20. 10170 IF KB$="M" OR KB$="m" THEN 530 'back to main
  21. 10180 GOSUB 610:GOTO 10070
  22. 10190 CLS:PRINT MNU5$:X=1:GOSUB 550 'show roster
  23. 10200 IF PR=0 THEN GOSUB 590:RETURN
  24. 10210 PRINT:LINE INPUT;"ENTER the line number of the player you want. ";KB$
  25. 10220 KB=VAL(KB$):IF KB>0 AND KB<=PMAX AND TMP(KB)=KB THEN 10250
  26. 10230 GOSUB 611:GOTO 10190
  27. 10240 '+++++     PDIR.DAT  PLAYER.DAT  GCDIR.DAT     +++++
  28. 10250 GOSUB 660:GET #4,KB:GOSUB 670:GET #5,KB
  29. 10260 PRN=VAL(E4$):GOSUB 650:GOSUB 655:GET #2,PRN:GET #3,PRN:CLOSE #2,#3,#4,#5
  30. 10270 E5=CVI(E5$):J5=CVI(J5$):SSW=0 'score & putt counts,set up flag
  31. 10280 '+++++     all data is in buffers #2,#3,#4,#5     +++++
  32. 10290 IF A5$="V" THEN 10320 'ok data is valid
  33. 10300 PRINT:PRINT"There are no putts or scores in the data bank for ";B4$;
  34. 10310 GOSUB 580:GOTO 10070
  35. 10320 CLS:PRINT SPC(7);"PC-GOLF's Score Sheets":PRINT
  36. 10330 MNU1$="1.  Review the scoring tables and bar charts.":PRINT SPC(3);MNU1$
  37. 10340 MNU2$="2.  Review the putting tables and bar charts.":PRINT SPC(3);MNU2$
  38. 10350 PRINT SPC(3);MNURT$:PRINT
  39. 10360 M1$="key":M2$="(1,2 or M) ":GOSUB 570:TSW=KB
  40. 10370 IF KB=1 THEN 10410
  41. 10380 IF KB=2 THEN 10440
  42. 10390 IF KB$="M" OR KB$="m" THEN 10070
  43. 10400 GOSUB 610:GOTO 10320
  44. 10410 IF E5<>0 THEN 10480
  45. 10420 PRINT:PRINT"There are no scores in the data bank for ";B4$
  46. 10430 GOSUB 580:GOTO 10320
  47. 10440 IF J5<>0 THEN 10480
  48. 10450 PRINT:PRINT"There are no putts in the data bank for ";B4$
  49. 10460 GOSUB 580:GOTO 10320
  50. 10470 '+++++     put scores in arrays     +++++
  51. 10480 IF SSW =1 THEN 11020 'tra if set up already
  52. 10490 N=1:FOR I=1 TO 18
  53. 10500   PS(I)=CVI(MID$(G5$,N,2)) 'gross scores
  54. 10510   IF E5<>0 THEN TAVG!(I)=PS(I)/E5           'avg gr scores
  55. 10520   IF F4$="m" THEN CP(I)=VAL(MID$(E2$,I,1)) 'course pars
  56. 10530   IF F4$="f" THEN CP(I)=VAL(MID$(H2$,I,1)) 'course pars
  57. 10540   PM!(I)=TAVG!(I)-CP(I)       'plus/minus avg gr scores
  58. 10550   TMP(I)=VAL(MID$(G2$,N,2)) 'hole hcaps
  59. 10560   GS(I)=I                   'hole #'s & index for hole #'s
  60. 10570 N=N+2:NEXT I
  61. 10580 '+++++     AVG SCORES     +++++
  62. 10590 IF E5=0 THEN 10650
  63. 10600 FOR I=1 TO 18:TX(I)=PS(I):TX!(I)=TAVG!(I):NEXT I
  64. 10610 T=E5:T3!=3:T4!=4:T5!=5:M1$=" AVERAGE SCORES ":M2$="Avg. score  "
  65. 10620 GOSUB 11690 'avg scores display
  66. 10630 '+++++
  67. 10640 'sort for hole handicaps
  68. 10650 PRINT:PRINT"Calculating - Standby -":LOCATE CSRLIN-2,POS(0),0
  69. 10660 FOR I=1 TO 18:IX(I)=I:KEE(I)=TMP(I):NEXT 'set key for h'caps
  70. 10670 GOSUB 11610:FOR I=1 TO 18:IK(I)=IX(I):NEXT 'save HCAP index
  71. 10680 GOSUB 580
  72. 10690 '+++++     put putts in arrays     +++++
  73. 10700 IF J5=0 THEN 10900 '# putts
  74. 10710 N=1:FOR I=1 TO 18
  75. 10720   PSP(I)=CVI(MID$(L5$,N,2))  'actual putts
  76. 10730   PAVG!(I)=PSP(I)/J5         'avg gr putts
  77. 10740   PMP!(I)=PAVG!(I)-2         'plus/minus avg gr putts
  78. 10750   IF F4$="m" THEN CP(I)=VAL(MID$(E2$,I,1)) 'course pars
  79. 10760   IF F4$="f" THEN CP(I)=VAL(MID$(H2$,I,1)) 'course pars
  80. 10770   TMP(I)=VAL(MID$(G2$,N,2))  'hole hcaps
  81. 10780   GS(I)=I                    'hole #'s & index for hole #'s
  82. 10790 N=N+2:NEXT I
  83. 10800 '+++++     AVERAGE PUTTS     +++++
  84. 10810 FOR I=1 TO 18:TX(I)=PSP(I):TX!(I)=PAVG!(I):NEXT I
  85. 10820 T=J5:T3!=PR!:T4!=T3!:T5!=T3!:M1$=" AVERAGE PUTTS ":M2$="Avg. putts  "
  86. 10830 GOSUB 11690 'avg putts display
  87. 10840 'sort for plus/minus putts
  88. 10850 PRINT:PRINT"Calculating - Standby -":LOCATE CSRLIN-2,POS(0),0
  89. 10860 FOR I=1 TO 18:IX(I)=I:KEE!(I)=INT(PMP!(I)*100)*100+I:NEXT
  90. 10870 GOSUB 11650:FOR I=1 TO 18:IY(I)=IX(I):NEXT 'save +/- index
  91. 10880 GOSUB 580
  92. 10890 '+++++     potpourri     +++++
  93. 10900 GOSUB 12150 'potpourri
  94. 10910 '+++++
  95. 10920 IF E5=0 THEN 11000
  96. 10930 'sort for plus/minus scores
  97. 10940 PRINT:PRINT"Calculating - Standby -":LOCATE CSRLIN-2,POS(0),0
  98. 10950 FOR I=1 TO 18:IX(I)=I:KEE!(I)=INT(PM!(I)*100)*100+I:NEXT
  99. 10960 GOSUB 11650:FOR I=1 TO 18:DD(I)=0:IJ(I)=IX(I):NEXT 'save +/- index
  100. 10970 H=VAL(D4$):DH!=0:FOR I=1 TO 18:DH!=DH!+PM!(IJ(I))
  101. 10980 IF DH!>H THEN DD(IJ(I))=I 'set for double diamond flag
  102. 10990 NEXT I
  103. 11000 GOSUB 580:SSW=1 'flag set up done
  104. 11010 '+++++
  105. 11020 IF TSW=2 THEN 11320 'scores or putts
  106. 11030 CLS:PRINT MNU1$:PRINT:PRINT SPC(8)"PC-GOLF's Score Sheets":PRINT
  107. 11040 PRINT"1.  Hole Handicap sequence table"
  108. 11050 PRINT"2.  Plus/Minus sequence table"
  109. 11060 PRINT"3.  Average Scores bar chart"
  110. 11070 PRINT"4.  Hole Handicap bar chart"
  111. 11080 PRINT"5.  Low-to-High Score bar chart"
  112. 11082 PRINT"6.  Scoring Trend chart"
  113. 11090 PRINT"7.  Average Scores"
  114. 11100 PRINT"8.  Potpourri"
  115. 11110 PRINT"9.  Personal Best"
  116. 11120 PRINT MNURT$:PRINT
  117. 11130 M1$="key":M2$="(1,2,3,4,5,6,7,8,9 or M) ":GOSUB 570
  118. 11140 M1$="Avg.score":FOR I=1 TO 18:KEE!(I)=TAVG!(I):TX!(I)=PM!(I):NEXT I
  119. 11150 IF KB=1 THEN GOSUB 12430:GOTO 11020
  120. 11160 IF KB=2 THEN GOSUB 12550:GOTO 11020
  121. 11170 M1$="Average Score":FOR I=1 TO 18:TX!(I)=PM!(I):IX(I)=GS(I):NEXT I
  122. 11180 T=E5
  123. 11190 IF KB=3 THEN PTYP$="HS":GOSUB 12780:GOTO 11020
  124. 11200 M1$="Hole Handicap":FOR I=1 TO 18:IX(I)=IK(I):NEXT I
  125. 11210 IF KB=4 THEN PTYP$="HC":GOSUB 12780:GOTO 11020
  126. 11220 M1$="Low-to-High Score":FOR I=1 TO 18:IX(I)=IJ(I):NEXT I
  127. 11230 IF KB=5 THEN PTYP$="PM":GOSUB 12780:GOTO 11020
  128. 11232 IF KB<>6 THEN 11240
  129. 11239 T=1:M1$="Scoring":GOSUB 13640:GOTO 11020
  130. 11240 FOR I=1 TO 18:TX(I)=PS(I):TX!(I)=TAVG!(I):NEXT I
  131. 11250 T=E5:T3!=3:T4!=4:T5!=5:M1$=" AVERAGE SCORES ":M2$="Avg. score  "
  132. 11260 IF KB=7 THEN GOSUB 11690:GOSUB 590:GOTO 11020
  133. 11270 IF KB=8 THEN GOSUB 12150:GOSUB 590:GOTO 11020
  134. 11280 IF KB=9 THEN GOSUB 13240:GOSUB 590:GOTO 11020
  135. 11290 IF KB$="M" OR KB$="m" THEN 10320
  136. 11300 GOSUB 610:GOTO 11020
  137. 11310 '+++++
  138. 11320 CLS:PRINT MNU2$:PRINT:PRINT SPC(8)"PC-GOLF's Score Sheets":PRINT
  139. 11330 PRINT"1.  Hole Handicap sequence table"
  140. 11340 PRINT"2.  Plus/Minus sequence table"
  141. 11350 PRINT"3.  Average Putts bar chart"
  142. 11360 PRINT"4.  Hole Handicap bar chart"
  143. 11370 PRINT"5.  Low-to-High Putts bar chart"
  144. 11372 PRINT"6.  Putting Trend chart"
  145. 11380 PRINT"7.  Average Putts"
  146. 11390 PRINT"8.  Potpourri"
  147. 11400 PRINT"9.  Personal Best"
  148. 11410 PRINT MNURT$:PRINT
  149. 11420 M1$="key":M2$="(1,2,3,4,5,6,7,8,9 or M) ":GOSUB 570
  150. 11430 M1$="Avg.putt ":FOR I=1 TO 18:KEE!(I)=PAVG!(I):TX!(I)=PMP!(I):NEXT I
  151. 11440 IF KB=1 THEN GOSUB 12430:GOTO 11020
  152. 11450 IF KB=2 THEN GOSUB 12550:GOTO 11020
  153. 11460 M1$="Average Putts":FOR I=1 TO 18:TX!(I)=PMP!(I):IX(I)=GS(I):NEXT I
  154. 11470 T=J5
  155. 11480 IF KB=3 THEN PTYP$="HP":GOSUB 12780:GOTO 11020
  156. 11490 M1$="Hole Handicap":FOR I=1 TO 18:IX(I)=IK(I):NEXT I
  157. 11500 IF KB=4 THEN PTYP$="HC":GOSUB 12780:GOTO 11020
  158. 11510 M1$="Low-to-High Putts":FOR I=1 TO 18:IX(I)=IY(I):NEXT I
  159. 11520 IF KB=5 THEN PTYP$="PM":GOSUB 12780:GOTO 11020
  160. 11522 IF KB<>6 THEN 11530
  161. 11526 T=2:M1$="Putting":GOSUB 13640:GOTO 11020
  162. 11530 FOR I=1 TO 18:TX(I)=PSP(I):TX!(I)=PAVG!(I):NEXT I
  163. 11540 T=J5:T3!=PR!:T4!=T3!:T5!=T3!:M1$=" AVERAGE PUTTS ":M2$="Avg. putts  "
  164. 11550 IF KB=7 THEN GOSUB 11690:GOSUB 590:GOTO 11020
  165. 11560 IF KB=8 THEN GOSUB 12150:GOSUB 590:GOTO 11020
  166. 11570 IF KB=9 THEN GOSUB 13240:GOSUB 590:GOTO 11020
  167. 11580 IF KB$="M" OR KB$="m" THEN 10320
  168. 11590 GOSUB 610:GOTO 11320
  169. 11600 '+++++     sort sub     +++++
  170. 11610 FOR I=1 TO 17:FOR J=I+1 TO 18:IF KEE(I)<=KEE(J) THEN 11630
  171. 11620 T=KEE(I):KEE(I)=KEE(J):KEE(J)=T:T=IX(I):IX(I)=IX(J):IX(J)=T
  172. 11630 NEXT J:NEXT I:RETURN
  173. 11640 '+++++     sort sub     +++++
  174. 11650 FOR I=1 TO 17:FOR J=I+1 TO 18:IF KEE!(I)<=KEE!(J) THEN 11670
  175. 11660 T!=KEE!(I):KEE!(I)=KEE!(J):KEE!(J)=T!:T=IX(I):IX(I)=IX(J):IX(J)=T
  176. 11670 NEXT J:NEXT I:RETURN
  177. 11680 '+++++     performance for par 3,4,5's     +++++
  178. 11690 P3=0:P4=0:P5=0:P3ACT=0:P4ACT=0:P5ACT=0
  179. 11700 FOR I=1 TO 18
  180. 11710 IF CP(I)=3 THEN P3=P3+1:P3ACT=P3ACT+TX(I) 'sum of actuals
  181. 11720 IF CP(I)=4 THEN P4=P4+1:P4ACT=P4ACT+TX(I)
  182. 11730 IF CP(I)=5 THEN P5=P5+1:P5ACT=P5ACT+TX(I)
  183. 11740 NEXT
  184. 11750 '+++++ t=# rounds tallied
  185. 11760 P3AVG!=0:IF P3<>0 THEN P3AVG!=P3ACT/(P3*T)
  186. 11770 P4AVG!=0:IF P4<>0 THEN P4AVG!=P4ACT/(P4*T)
  187. 11780 P5AVG!=0:IF P5<>0 THEN P5AVG!=P5ACT/(P5*T)
  188. 11790 P3DEL!=0:IF P3<>0 THEN P3DEL!=P3AVG!-T3!
  189. 11800 P4DEL!=0:IF P4<>0 THEN P4DEL!=P4AVG!-T4!
  190. 11810 P5DEL!=0:IF P5<>0 THEN P5DEL!=P5AVG!-T5!
  191. 11820 '+++++     AVERAGE SCORES     +++++
  192. 11830 CLS:PRINT"Scoring Table for ";B4$:PRINT"Home Course - ";B2$
  193. 11840 PRINT"with ";T;" rounds tallied." '# rounds
  194. 11850 PRINT SPC(30);:COLOR 0,15,0:PRINT M1$;:COLOR 7,0,0
  195. 11860 PRINT SPC(5);GREG$:PRINT
  196. 11870 COLOR 0,15,0:PRINT" Front Nine ";:COLOR 7,0,0:PRINT SPC(1);
  197. 11880 FOR I=1 TO 9:PRINT USING"##   ";I;
  198. 11890 IF I=3 OR I=6 THEN PRINT SPC(4)
  199. 11900 NEXT:PRINT
  200. 11910 PRINT"PAR";SPC(10);:FOR I=1 TO 9:PRINT USING "##   ";CP(I);
  201. 11920 IF I=3 OR I=6 THEN PRINT SPC(4);
  202. 11930 NEXT:PRINT
  203. 11940 PRINT M2$;:FOR I=1 TO 9:PRINT USING "#.#  ";TX!(I);
  204. 11950 IF I=3 OR I=6 THEN PRINT SPC(4)
  205. 11960 NEXT:PRINT:PRINT:PRINT
  206. 11970 COLOR 0,15,0:PRINT" Back Nine  ";:COLOR 7,0,0:PRINT SPC(1);
  207. 11980 FOR I=10 TO 18:PRINT USING"##   ";I;
  208. 11990 IF I=12 OR I=15 THEN PRINT SPC(4)
  209. 12000 NEXT:PRINT
  210. 12010 PRINT"PAR";SPC(10);:FOR I=10 TO 18:PRINT USING "##   ";CP(I);
  211. 12020 IF I=12 OR I=15 THEN PRINT SPC(4);
  212. 12030 NEXT:PRINT
  213. 12040 PRINT M2$;:FOR I=10 TO 18:PRINT USING "#.#  ";TX!(I);
  214. 12050 IF I=12 OR I=15 THEN PRINT SPC(4)
  215. 12060 NEXT:PRINT:PRINT:PRINT
  216. 12070 COLOR 0,15,0:PRINT" PAR ";:COLOR 7,0,0:PRINT SPC(12);
  217. 12080 PRINT"par 3's";SPC(12);"par 4's";SPC(12);"par 5's"
  218. 12090 PRINT M2$;SPC(7)
  219. 12100 PRINT USING "#.#                ";P3AVG!;P4AVG!;P5AVG!
  220. 12110 PRINT "Plus/Minus";SPC(8)
  221. 12120 PRINT USING "+#.#               ";P3DEL!;P4DEL!;P5DEL!
  222. 12130 RETURN
  223. 12140 '+++++     POTPOURRI     +++++
  224. 12150 CLS:PRINT"Scoring Table for ";B4$:PRINT"Home Course - ";B2$
  225. 12160 T=E5:IF T=0 THEN T=J5
  226. 12170 PRINT       '"with ";T;" rounds tallied.":PRINT
  227. 12180 PRINT SPC(12):COLOR 0,15,0:PRINT" POTPOURRI ";:COLOR 7,0,0
  228. 12190 PRINT SPC(10)GREG$:PRINT
  229. 12200 IF E5=0 THEN 12310
  230. 12210 T=0:T!=0:FOR I=1 TO 40 STEP 2:J=CVI(MID$(F5$,I,2)):T!=T!+J
  231. 12220 IF J<>0 THEN T=T+1
  232. 12230 NEXT I
  233. 12240 PRINT"Your gross scores for the last ";T;" rounds.":PRINT
  234. 12250 X=0:FOR I=41-2*T TO 39 STEP 2:PRINT USING" ###";CVI(MID$(F5$,I,2));
  235. 12260 X=X+1:IF X=10 AND X<E5 THEN PRINT
  236. 12270 NEXT I:PRINT:PRINT
  237. 12280 PRINT USING"       the average gross score is ###.#";T!/T
  238. 12290 PRINT SPC(7)"the lowest gross score to date is ";CVI(I5$):PRINT
  239. 12300 '+++++
  240. 12310 IF J5=0 THEN 12410
  241. 12320 T=0:T!=0:FOR I=1 TO 40 STEP 2:J=CVI(MID$(K5$,I,2)):T!=T!+J
  242. 12330 IF J<>0 THEN T=T+1
  243. 12340 NEXT I
  244. 12350 PRINT"Your putting scores for the last ";T;" rounds.":PRINT
  245. 12360 X=0:FOR I=41-2*T TO 39 STEP 2:PRINT USING" ###";CVI(MID$(K5$,I,2));
  246. 12370 X=X+1:IF X=10 AND X<J5 THEN PRINT
  247. 12380 NEXT I:PRINT:PRINT
  248. 12390 PRINT USING"     the average putting score is  ##.#";T!/T
  249. 12400 PRINT SPC(5)"the lowest putting score to date is ";CVI(N5$)
  250. 12410 RETURN
  251. 12420 '+++++     show avg scores in handicap sort     +++++
  252. 12430 CLS:PRINT SPC(3):COLOR 0,15,0:PRINT " Handicap Sequence ";:COLOR 7,0,0
  253. 12440 PRINT SPC(3);B4$:PRINT SPC(6);GREG$;SPC(11);B2$
  254. 12450 PRINT"PAR";SPC(4);"Hole #";SPC(3);
  255. 12460 COLOR 0,15,0:PRINT" H,cap ";:COLOR 7,0,0
  256. 12470 PRINT SPC(2);M1$;SPC(5);"+/-"
  257. 12480 FOR I=1 TO 18
  258. 12490 PRINT USING"##       ";CP(IK(I));GS(IK(I));TMP(IK(I));
  259. 12500 PRINT USING"#.##       ";KEE!(IK(I));
  260. 12510 PRINT USING"+#.##";TX!(IK(I))
  261. 12520 NEXT
  262. 12530 GOSUB 590:RETURN
  263. 12540 '+++++     show avg scores in +/- sort     +++++
  264. 12550 CLS:PRINT SPC(3):COLOR 0,15,0:PRINT " Plus/Minus Sequence ";:COLOR 7,0,0
  265. 12560 PRINT SPC(1);B4$:PRINT SPC(6);GREG$;SPC(11);B2$
  266. 12570 PRINT"PAR";SPC(4);"Hole #";SPC(4);
  267. 12580 PRINT"H,cap";SPC(3);M1$;SPC(4)
  268. 12590 COLOR 0,15,0:PRINT" +/- ":COLOR 7,0,0
  269. 12600 IF TSW=2 THEN 12660
  270. 12610 FOR I=1 TO 18
  271. 12620 PRINT USING"##       ";CP(IJ(I));GS(IJ(I));TMP(IJ(I));
  272. 12630 PRINT USING"#.##       ";KEE!(IJ(I));
  273. 12640 PRINT USING"+#.##";TX!(IJ(I))
  274. 12650 NEXT:GOTO 12710
  275. 12660 FOR I=1 TO 18
  276. 12670 PRINT USING"##       ";CP(IY(I));GS(IY(I));TMP(IY(I));
  277. 12680 PRINT USING"#.##       ";KEE!(IY(I));
  278. 12690 PRINT USING"+#.##";TX!(IY(I))
  279. 12700 NEXT
  280. 12710 GOSUB 590:RETURN
  281. 12720 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  282. 12730 'PLOT Subroutine
  283. 12740 'ENTER ptyp$=PM,HC,or [HS or HP] - sort is +/-, Hcap, or Hole #
  284. 12750 '      M1$=title, tx!(i)=PM!(i) or PMP!(i)
  285. 12760 '      ix(i)=index
  286. 12770 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  287. 12780 WIDTH 80:SCREEN 2
  288. 12790 LOCATE 1,16:PRINT M1$;
  289. 12800 PRINT" Bar Chart for ";B4$
  290. 12810 PRINT SPC(18)"With ";T;" rounds tallied.  ";GREG$
  291. 12812 PRINT SPC(22) B2$
  292. 12820 H0=56:H1=H0:H2=H1:HINC=16 'init values
  293. 12830 V0=159:V0!=159:VINC!=32
  294. 12840 D$=CHR$(46)+" "+CHR$(46)+" ":F$="    ":G$=CHR$(124):V!=-1
  295. 12850 SCREEN 2
  296. 12860 '+++++     print horiz lines and +/- #'s
  297. 12870 FOR I=24 TO 4 STEP -4
  298. 12880 LOCATE I,4:PRINT USING"+#  ";V!;
  299. 12890 FOR J=1 TO 18
  300. 12900 IF V!<0 THEN IF V!<TX!(IX(J)) THEN PRINT D$; ELSE PRINT F$;
  301. 12902 IF V!=0 THEN PRINT "____";
  302. 12910 IF V!>0 THEN IF V!>TX!(IX(J)) THEN PRINT D$; ELSE PRINT F$;
  303. 12920 NEXT J:V!=V!+1:NEXT I
  304. 12930 '+++++     print HOLE # below zero line
  305. 12940 LOCATE 21,8
  306. 12950 FOR I=1 TO 18:LOCATE 21,POS(0):Y=POS(0)
  307. 12960 IF PTYP$="HC" THEN PRINT USING"##  ";GS(IX(I)); 'hole hcaps
  308. 12970 IF PTYP$<>"HC" THEN PRINT USING"##  ";GS(IX(I)); 'hole #s
  309. 12980 IF PTYP$="HS" AND DD(I)<>0 THEN LOCATE 23,Y:PRINT CHR$(4);CHR$(4);"  ";
  310. 12990 NEXT I
  311. 13000 ' *** character fill bars on chart
  312. 13010 H1=8:HAF$="..":FUL$="::":BAR$=FUL$:BHAF$="`'"
  313. 13020 FOR I=1 TO 18:NBRCV=ABS(INT(TX!(IX(I))*4)):K=0
  314. 13030 SLIN=INT(20-(TX!(IX(I))*4)):IF SLIN>20 THEN SLIN=20
  315. 13040 T4!=TX!(IX(I)):T5!=INT(TX!(IX(I))/.25)
  316. 13050 IF T4!<>.25*T5! THEN BAR$=HAF$:NBRCV=NBRCV+1:K=1
  317. 13060 IF T4!<0 AND BAR$=HAF$ THEN BAR$=FUL$:NBRCV=NBRCV-1
  318. 13070 IF T4!<0 THEN BAR$=FUL$
  319. 13080 FOR J=SLIN+1 TO SLIN+NBRCV
  320. 13082 JJ=J: IF JJ>24 THEN JJ=24
  321. 13090 LOCATE JJ,H1:PRINT BAR$;:BAR$=FUL$:NEXT J:IF T4!>=0 THEN 13110
  322. 13100 IF K=1 THEN LOCATE CSRLIN,H1:PRINT BHAF$;
  323. 13102    LOCATE 20,H1-1:PRINT GS(IX(I))
  324. 13110 H1=H1+4:NEXT I
  325. 13160 FOR I=5 TO 23:LOCATE I,7:PRINT G$:LOCATE I,79:PRINT G$:NEXT
  326. 13170 LOCATE 25,16,0
  327. 13180 PRINT"PRESS the space bar to continue.";
  328. 13190 KB$=INKEY$:IF KB$<>"" THEN 13190
  329. 13200 KB$=INKEY$:IF KB$<>" " THEN 13200
  330. 13210 LOCATE CSRLIN,POS(0),1
  331. 13220 SCREEN 0:RETURN
  332. 13230 '+++++     PERSONAL BEST       +++++
  333. 13240 CLS:KB$=B4$:GOSUB 700:PRINT SPC(12):COLOR 0,15,0
  334. 13242 PRINT" -   PERSONAL BEST   -  ";KB$;" ":COLOR 7,0,0
  335. 13250 LOCATE 1,67:PRINT GREG$:PRINT
  336. 13260 CF=0:CB=0:AF=0:AB=0:PF=0:PB=0
  337. 13270 FOR I=1 TO 9:CF=CF+CP(I):CB=CB+CP(I+9):NEXT I
  338. 13280 FOR I=1 TO 18:TX(I)=VAL(MID$(H5$,I,1)):IX(I)=VAL(MID$(M5$,I,1)):NEXT I
  339. 13290 FOR I=1 TO 9:AF=AF+TX(I):AB=AB+TX(I+9):PF=PF+IX(I):PB=PB+IX(I+9):NEXT I
  340. 13300 IF E5<>0 THEN YT=1
  341. 13310 IF J5<>0 THEN YT=2
  342. 13320 IF E5<>0 AND J5<>0 THEN YT=3
  343. 13330 PRINT "HOLE #";SPC(4);
  344. 13340 FOR I=1 TO 9 STEP 3:PRINT USING "###";I;I+1;I+2;:PRINT SPC(1):NEXT I
  345. 13350 PRINT "Front";
  346. 13360 FOR I=10 TO 18 STEP 3:PRINT USING "###";I;I+1;I+2;:PRINT SPC(1):NEXT I
  347. 13370 PRINT "Back":PRINT SPC(41);"nine";SPC(30);"nine":PRINT "par";SPC(8);
  348. 13380 FOR I=1 TO 9 STEP 3:PRINT CP(I);CP(I+1);CP(I+2);SPC(1):NEXT I:PRINT CF;
  349. 13390 FOR I=10 TO 18 STEP 3:PRINT USING "###";CP(I);CP(I+1);CP(I+2);
  350. 13400 PRINT SPC(1):NEXT I:PRINT CB:PRINT
  351. 13410 IF YT=2 THEN 13450 ELSE COLOR 0,15,0:PRINT "low scores ";:COLOR 7,0,0
  352. 13420 FOR I=1 TO 9 STEP 3:PRINT TX(I);TX(I+1);TX(I+2);SPC(1);:NEXT I:PRINT AF;
  353. 13430 FOR I=10 TO 18 STEP 3:PRINT USING "###";TX(I);TX(I+1);TX(I+2);
  354. 13440 PRINT SPC(1):NEXT I:PRINT AB
  355. 13450 IF YT=1 THEN 13500 ELSE PRINT:COLOR 0,15,0:PRINT "low putts  ";:COLOR 7,0,0
  356. 13460 FOR I=1 TO 9 STEP 3:PRINT IX(I);IX(I+1);IX(I+2);SPC(1);:NEXT I
  357. 13470 PRINT USING" ## ";PF;
  358. 13480 FOR I=10 TO 18 STEP 3:PRINT USING "###";IX(I);IX(I+1);IX(I+2);
  359. 13490 PRINT SPC(1);:NEXT I:PRINT USING" ##";PB
  360. 13500 PRINT:PRINT SPC(12)"Best low scores at: ";B2$
  361. 13510 IF YT<>2 THEN PRINT SPC(12):PRINT USING" ### full rounds.";E5
  362. 13520 IF YT<>1 THEN PRINT SPC(12):PRINT USING" ### putting rounds.";J5
  363. 13530 LOCATE CSRLIN+1,15:COLOR 0,15,0
  364. 13540 IF YT<>2 THEN PRINT" Low score total is ";AF+AB
  365. 13550 LOCATE CSRLIN+1,15:IF YT<>1 THEN PRINT" Low putt  total is ";PF+PB
  366. 13580 COLOR 7,0,0:RETURN
  367. 13590 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  368. 13600 'PLOT TRENDS Subroutine
  369. 13610 'ENTER M1$=title, TMP(i)=scores<=20 to be plotted or zero's
  370. 13620 '      Max range of scores is 20 strokes(low to high)
  371. 13630 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  372. 13640 N=1:FOR I=1 TO 20:TX(I)=0
  373. 13642 IF T=1 THEN T1(I)=CVI(MID$(F5$,N,2))
  374. 13643 IF T=2 THEN T1(I)=CVI(MID$(K5$,N,2))
  375. 13645 N=N+2:NEXT I
  376. 13648 FOR I=1 TO 20:IF T1(I)<>0 THEN 13655
  377. 13650 NEXT I:I=1
  378. 13655 K=1:FOR J=I TO 20:TX(K)=T1(J):K=K+1:NEXT J
  379. 13712 L=999:H=0:FOR I=1 TO 20
  380. 13714 IF TX(I)=0 THEN 13722
  381. 13716 IF TX(I)>H THEN H=TX(I)
  382. 13718 IF TX(I)<L THEN L=TX(I)
  383. 13720 NEXT I
  384. 13722 M=L:N=I-1:D2=(H-L+1):IF D2<=20 THEN 13728 'limit test
  385. 13724 H=L+19:FOR I=1 TO N:IF TX(I)>H THEN TX(I)=H
  386. 13726 NEXT I:D2=20
  387. 13728 D1=(20-D2)/2:WIDTH 80:SCREEN 2
  388. 13740 LOCATE 1,16:PRINT M1$;:PRINT" Trend Chart for ";B4$
  389. 13750 PRINT SPC(18)"For the last ";N;" rounds.  ";GREG$
  390. 13752 PRINT SPC(22) B2$
  391. 13760 D$=CHR$(46)+"  ":G$=CHR$(124)
  392. 13770 '+++++     print horiz lines and scores
  393. 13780 K=4:X=23:Y=4:FOR I=X TO Y STEP -1
  394. 13790 IF I<=X-D1 AND I>X-D1-D2 THEN LOCATE I,K:PRINT USING"### ";M;:M=M+1
  395. 13800 LOCATE I,K+5:FOR J=1 TO 20:PRINT D$;
  396. 13810 NEXT J:NEXT I
  397. 13820 '+++++     print round #
  398. 13830 LOCATE X+1-D1,K+4:FOR I=1 TO N:PRINT USING"## ";I;:NEXT I
  399. 13840 '+++++     draw lines
  400. 13850 H=K+5:H0=H*8-4
  401. 13860 V=X-D1:V0=(V-(TX(1)-L))*8-4
  402. 13870 FOR I=1 TO N
  403. 13880 M=TX(I)-L
  404. 13915 LOCATE V-M,H:PRINT "*"
  405. 13920 H=H+3:FOR Z=1 TO 50:NEXT Z
  406. 13930 NEXT I
  407. 13940 FOR I=Y TO X:LOCATE I,K+3:PRINT G$:LOCATE I,K+64:PRINT G$:NEXT
  408. 13950 LOCATE 25,16,0:PRINT"PRESS the space bar to continue.";
  409. 13960 KB$=INKEY$:IF KB$<>"" THEN 13960
  410. 13970 KB$=INKEY$:IF KB$<>" " THEN 13970
  411. 13980 LOCATE CSRLIN,POS(0),1:SCREEN 0:RETURN
  412. 13990 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  413. 14000 '+++++     GRUNT WORK
  414. 14010 DELETE 490-9999
  415. 14020 SAVE"b:perform.asc",A
  416. 14030 RUN"b:main.bas"
  417. 15000 'for chain delete
  418. 000 '+++++     GRUNT WORK
  419. 14010 DELETE 490-9999
  420. 14020 SAVE"b:perform.asc",A
  421. 14030 RUN"b:main.bas"
  422. 15000 'for chain dele